package com.ktgj.customer.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ktgj.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MallOrderBackstage implements Serializable {
    public MallOrderBackstage() {
        this.productName = new ArrayList<>();
        this.lstSupplierProduct = new ArrayList<>();
        this.productDetails = new ArrayList<>();
    }

    /** 退单主键 */
    private Long refundId;

    /** 订单主键 */
    private Long orderId;

    /** 0 普通订单  10团单  20秒杀单 30商品组合单 40权益兑换 90混合订单 */
    @Excel(name = "0 普通订单  10团单  20秒杀单 30商品组合单 40权益兑换 90混合订单")
    private String typeId;

    /** 昵称 */
    @Excel(name = "昵称")
    private String nickName;

    /** openId */
    @Excel(name = "openId")
    private String openId;

    /** 客户基本信息ID */
    private Long customerId;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private List<String> productName;

    /** 商品数量 */
    @Excel(name = "商品数量")
    private int productNumber;

    /** 需要支付金额 = amount - coupon_price */
    @Excel(name = "需要支付金额 = amount - coupon_price")
    private BigDecimal payAmount;

    /** 结算总价 */
    @Excel(name = "结算总价")
    private BigDecimal amount;

    /** 订单状态 */
    @Excel(name = "订单状态")
    private String status;

    /** 客户常用名 */
    @Excel(name = "客户常用名")
    private String customerName;

    /** 卡号 */
    @Excel(name = "卡号")
    private String cardCode;

    /** 联系人电话1 */
    @Excel(name = "联系人电话1")
    private String contractPhoneOne;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    //商品详细信息
    private List<MallSupplierProduct> lstSupplierProduct;

    /** 订单商品、规格、快递单号 */
    @Excel(name = "订单商品、规格、快递单号")
    private List<MallOrderProductDetails> productDetails;

    /** 积分抵扣 */
    @Excel(name = "积分抵扣")
    private BigDecimal integralPrice;

    /** 优惠券、商品兑换券 */
    @Excel(name = "优惠券、商品兑换券")
    private CouponDto coupon;

    /**
     * 退款确认时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applyTime;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount;

    public void setProductName(List<String> productName)
    {
        this.productName = productName;
    }

    public List<MallSupplierProduct> getLstSupplierProduct()
    {
        return lstSupplierProduct;
    }

    public void setLstSupplierProduct(List<MallSupplierProduct> lstSupplierProduct)
    {
        this.lstSupplierProduct = lstSupplierProduct;
    }

    public Long getRefundId() {
        return refundId;
    }

    public void setRefundId(Long refundId) {
        this.refundId = refundId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public String getTypeId() {
        return typeId;
    }

    public void setTypeId(String typeId) {
        this.typeId = typeId;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getOpenId() {
        return openId;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public List<String> getProductName() {
        return productName;
    }

    public int getProductNumber() {
        return productNumber;
    }

    public void setProductNumber(int productNumber) {
        this.productNumber = productNumber;
    }

    public BigDecimal getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(BigDecimal payAmount) {
        this.payAmount = payAmount;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCardCode() {
        return cardCode;
    }

    public void setCardCode(String cardCode) {
        this.cardCode = cardCode;
    }

    public String getContractPhoneOne() {
        return contractPhoneOne;
    }

    public void setContractPhoneOne(String contractPhoneOne) {
        this.contractPhoneOne = contractPhoneOne;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getIntegralPrice() {
        return integralPrice;
    }

    public void setIntegralPrice(BigDecimal integralPrice) {
        this.integralPrice = integralPrice;
    }

    public CouponDto getCoupon() {
        return coupon;
    }

    public void setCoupon(CouponDto coupon) {
        this.coupon = coupon;
    }

    public List<MallOrderProductDetails> getProductDetails() {
        return productDetails;
    }

    public Date getApplyTime() {
        return applyTime;
    }

    public void setApplyTime(Date applyTime) {
        this.applyTime = applyTime;
    }

    public BigDecimal getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(BigDecimal refundAmount) {
        this.refundAmount = refundAmount;
    }
}
